package Learn;

public class ObjectDemo2 {
    //3.clone
    public static void main(String[] args) throws CloneNotSupportedException {
        int []data={1,2,3,4,5,6,7};
        User u1=new User(1,"MYuHe","123456","girl",data);


        //克隆对象
        //在底层会创建一个对象 并把元对象中的数据拷贝过去
        //细节：
        //重写Object的方法
        //JavaBean实现Cloneable的接口
        //创建对象调用

        User u2=(User) u1.clone();

        //验证Object中的clone是浅克隆
        int []arr=u1.getData();
        arr[0]=100;

        System.out.println(u1);
        System.out.println(u2);

        //浅克隆 在堆区创建对象后 直接记录基本数据类型 以及存在串池的值 以及数组都会被赋值给克隆出来的对象
        //深克隆 克隆出来的值 基本数据类型还是直接赋值 引用数据类型中数组会创建一个新的 而字符串 串池中已经存在 直接复用


        //如果是二维数组自己写的就还是传的是地址值 那么还是两个数组指向同一块地址
        //拓展 用第三方工具
        //gson


    }
}
